The present invention relates generally to error-correction coding and, more particularly, to a decoder for parallel convolutional codes, i.e., turbo codes.
A new class of forward error control codes, referred to as turbo codes, offers significant coding gain for power limited communication channels. Turbo codes are generated using two or more recursive systematic encoders operating on different orderings of the same information bits. A subset of the code bits generated by each encoder is transmitted in order to maintain bandwidth efficiency. Turbo decoding involves an iterative algorithm in which probability estimates of the information bits that are calculated for one of the received component code words are fed back to a probability estimator comprising the decoder component code words for the other component code words. Each iteration of decoder processing generally increases the reliability of these probability estimates. This process continues, cyclically decoding the component code words until the probability estimates can be used to make reliable decisions.
The maximum a posteriori (MAP) type algorithm introduced by Bahl, Cocke, Jelinek, and Raviv in xe2x80x9cOptimal Decoding of Linear Codes for Minimizing Symbol Error Ratexe2x80x9d, IEEE Transactions on Information Theory, March 1974, pp. 284-287, is particularly useful as a component decoder in decoding parallel concatenated convolutional codes, i.e., turbo codes. The MAP algorithm is used in the turbo decoder to generate a posteriori probability estimates of the information bits that have been encoded into the code word. These probability estimates are used as a priori bit probabilities for the second MAP decoder. Three fundamental terms in the MAP algorithm are the forward and backward state probability functions (the alpha and beta functions, respectively) and the a posteriori transition probabilities (the sigma functions).
A known characteristic of turbo codes is that their error correction capability increases with code word length. However, there is some practical limit on the length of a code word that can be decoded with a MAP-algorithm decoder implementation. Accordingly, it is desirable to provide a modular turbo decoder structure capable of decoding longer code word lengths. It is furthermore desirable to provide such a turbo decoder while increasing coding gain and data rate.
A turbo decoder system utilizing a MAP decoding algorithm comprises a predetermined number M of turbo decoder modules for decoding segments of a turbo code component code word in parallel, thereby expanding the block-length and data-rate capability of the turbo decoder system. In an exemplary system, each turbo decoder module has a predetermined maximum code-word size corresponding to N information bits, and a predetermined maximum decoding rate. Input data samples from a received code word, corresponding to Mxc2x7N information bits, are provided to an interleaver/de-interleaver module wherein they are divided into segments of predetermined size, each segment being provided to a respective turbo decoder module. The output of each turbo decoder module comprises a posteriori probabilities which are re-ordered in the interleaver/de-interleaver module, segmented, and provided back to the turbo decoders as a priori information bit probabilities. For the case of a turbo code comprising two component codes, the a posteriori information-bit probabilities are re-ordered according to the interleaver definition at the end of odd-numbered half iterations, while at the end of even-numbered half iterations, they are re-ordered according to the de-interleaver definition. Decoding continues until the desired number of iterations have been performed. Then, data decisions are made on the final a posteriori bit probability estimates.